package com.yunsom.testdemo.multiple_thread.producer_customer.wait_notify;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 生产者:生产数据一方，数据生产后放入仓库
 * 消费者:处理数据一方，从仓库获取数据
 * 仓库： 存储数据，协调生产与消费
 *
 * 生产者-消费者模式优势：
 * 解耦生产者消费者
 * 支持并发，生产者消费者不再互相依赖，可彼此独立并发
 * 支持忙闲不均，双方处理数据的速度可以不同，通过仓库来缓冲数据
 *
 * wait notify版本
 */
public class WaitNotifyTest {
    public static void main(String[] args) {
        Queue<Integer> buffer = new LinkedList<>();
        int maxSize = 10;
        Thread producer = new Producer(buffer, maxSize, "Producer");
        Thread consumer = new Consumer(buffer, maxSize, "Consumer");
        producer.start();
        consumer.start();
    }
}

